package com.modules.tag;

import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by lewis on 2017/6/16.
 */
public class OptionSupportHandler implements OptionSupport {

    /*所有选项*/
    Map<String, Option> options = new HashMap<String, Option>();

    /*所有列*/
    List<Column> columns = new ArrayList<Column>();

    public String getJSExpression() {
        StringBuffer expr = new StringBuffer();
        expr.append("{");
        if(options.size() > 0)
        {
            for(Option opt : options.values())
            {
                expr.append(opt.getExpr());
                expr.append(", ");
            }
            if(columns.size()>0){
                expr.append("cols: [[");
                for(Column column:columns){
                    expr.append("{ ");
                    if(StringUtils.isNotEmpty(column.getAlign())){
                        expr.append("align:'"+column.getAlign()+"',");
                    }
                    if(column.getCheckbox()){
                        expr.append("checkbox:true");
                    }
                    if(column.getEdit()){
                        expr.append("edit:'text'");
                    }
                    if(column.getFixed()){

                    }
                }

            }else{
                expr.deleteCharAt(expr.length() - 2);
            }
        }
        expr.append("}");
        return expr.toString();
    }


    public void addOption(Option opt) {
        if(options != null)
        {
            options.put(opt.getName(), opt);
        }
    }

    public void addColumn(Column column){
        if(columns != null) columns.add(column);
    }



    /**
     * 判断是否包含某个选项
     */
    public boolean contains(String key) {
        return options.containsKey(key);
    }

    /**
     * 获得所有选项
     */
    public List<Option> getOptions() {
        if(options != null)
        {
            return new ArrayList<Option>(options.values());
        }
        return null;
    }

    /**
     * 清空选项
     */
    public void clear()
    {
        options.clear();
    }

    /**
     * 返回选项的个数
     * @return
     */
    public int size()
    {
        return options.size();
    }
}